﻿//73.矩阵置零
//给定一个 m x n 的矩阵，如果一个元素为 0 ，则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix)
    {
        int m = matrix.size();
        int n = matrix[0].size();
        int flag1 = false;      //标记第一行
        int flag2 = false;      //标记第一列
        for (int i = 0; i < m; i++)
        {
            if (!matrix[i][0])
                flag2 = true;
        }
        for (int i = 0; i < n; i++)
        {
            if (!matrix[0][i])
                flag1 = true;
        }
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (!matrix[i][j])
                {
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }
        for (int i = 1; i < m; i++)
        {
            if (!matrix[i][0])
            {
                for (int z = 0; z < n; z++)
                {
                    matrix[i][z] = 0;
                }
            }

        }
        for (int i = 1; i < n; i++)
        {
            if (!matrix[0][i])
            {
                for (int z = 0; z < m; z++)
                {
                    matrix[z][i] = 0;
                }
            }
        }
        if (flag1)
        {
            for (int i = 0; i < n; i++)
            {
                matrix[0][i] = 0;
            }

        }
        if (flag2)
        {
            for (int i = 0; i < m; i++)
            {
                matrix[i][0] = 0;
            }

        }
    }
};